//
//  IMSSDKEntryProtocol.h
//  IMSAppDemo
//
//  Created by Dong on 2017/12/5.
//  Copyright © 2017年 Aliyun.com. All rights reserved.
//

#import <UIKit/UIKit.h>

/**
 *  SDK展现模块入口协议,本Demo主要展示各个子模块是如何使用的,这些子模块的使用示例均遵守了SDK展现模块入口协议,
 *  例如 SDKEntryApiClient () <IMSSDKEntryProtocol> ,这是 API网关的示例,Demo
 * 工程启动后getAllClasses方法会寻找遵循了<IMSSDKEntryProtocol>协议的类,
 *  然后依据其getSDKDisplayConfig中的DisplayLevel按照顺序在首页展示,各个子模块示例源码统一放到
 * LocalPods 目录,为了便于示例源码学习,
 *  可以依据如下子模块源码文件名与展示名称对应进行查找:
 *  SDKEntryBoneKit       : Bone Mobile 容器 SDK
 *  SDKEntryApiClient     : API 通道
 *  SDKEntryMobileChannel : 长连接通道
 *  SDKEntryAccount       : 账号和用户
 *  SDKEntryPush          : 移动应用推送
 */
@protocol IMSSDKEntryProtocol<NSObject>

@required
/**
 * 用户看到的SDK 在 demoapp 首页上列表的UI,每个 SDK 占据一行,可以有多个 点击事件
 * DisplayLevel 界面展示顺序 大于等于0的整数
 * config格式 @{@"DisplayName":@"BoneMobile容器 SDK",@"Actions":@[@"API
 * 列表",@"组件列表"],@"DisplayLevel":@"0"};
 */
+ (NSDictionary *)getSDKDisplayConfig;

/**
 * 选择事件处理
 * @param selectedIndex  用户点击的 button 是第几个
 * @param navigation  点击页面的导航控制器
 */
+ (void)didSelected:(NSNumber *)selectedIndex
               from:(UINavigationController *)navigation;

/**
 * 启动顺序 ,是大于0的浮点数,在整个 Demoapp
 * 初始化时按照数值从小到大是顺序调用SDKEntryInit方法,
 * 高优先级的取值范围: 1.0~2.0 ,中优先级:2.0~3.0,低优先级>3.0
 */
+ (float)getInitLevel;

/**
 *  sdk初始化方法
 */
+ (void)SDKEntryInit;

@end
